// pages/login/login.js

import { request } from '../../request/index'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 发送按钮显示
    send:true,
    // 当前倒计时秒数
    seconds:"",
    // 总秒数
    max_seconds:59,
    //真实姓名
    realName: '',
    //身份证
    IDCard: '',
    //昵称
    nickname: '',
    //密码
    password: '',
    //手机号
    phoneNumber: '',
    //验证码
    validNumber: '',
    //登录按钮的状态
    isCodeSent: false,
    // 选中的数据 省市区
    region: [],
    //详细地址
    address: '',
  },

  // 校验身份证号
  validateIDCard: function() {
    const { IDCard } = this.data;
    
    // 身份证号正则表达式（18位）
    const regExp = /(^\d{15}$)|(^\d{17}([0-9]|X)$)/;
    
    if (!regExp.test(IDCard.trim())) {
      wx.showToast({
        title: '身份证号格式错误',
        icon: 'none'
      });
      return false;
    }
    
    // 身份证号校验通过
    return true;
  },

  // 验证手机号的函数
  checkPhoneNumber: function(phoneNumber) {
    console.log('验证手机号的函数');
    // 如果参数为空，则返回 false
    if (!phoneNumber || phoneNumber.trim() === '') {
      console.log('参数不能为空');
      return false;
    }
  
    // 去除参数中的空格
    phoneNumber = phoneNumber.replace(/\s/g, '');
  
    let str = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
    return str.test(phoneNumber);
  },

  // 绑定数据
  bindInputData: function(e) {
    const { field } = e.currentTarget.dataset;
    const { value } = e.detail;
    this.setData({
      [field]: value
    });
    console.log(`${field}是`, value);
  },

  /**
   * 绑定省市区数据
   */
  bindRegionChange: function (e) {
    console.log(e.detail.value)
    console.log(e.detail.code)
    this.setData({
      region: e.detail.value
    })
    console.log(this.data.region[0])
  },

 /**
 * 发送验证码
 */
 onSend(){
  console.log("phoneNumber:",this.data.phoneNumber);
  const flag = this.checkPhoneNumber(this.data.phoneNumber)
  if (!flag) {
    wx.showToast({
      title: '请先输入正确的手机号',
      icon: 'none'
    });
    return;
  }

  var that=this;
  // 获取总秒数
  var seconds=this.data.max_seconds;
  this.setData({
    // 显示倒计时
    send:false,
    // 设置秒数
    seconds:seconds,
  })
  // 设置定时器
  var t=setInterval(function(){
    // 如果秒数小于0
    if(seconds<=0){
      // 停止定时器
      clearInterval(t);
      that.setData({
        // 显示发送按钮
        send:true,
      })
      // 停止执行
      return;
    }
    // 秒数减一
    seconds--;
    that.setData({
      // 更新当前秒数
      seconds:seconds,
    })
  },1000)
  //接口
  //发送验证码请求
  const tel = this.data.phoneNumber
  request({
    url: '/user/msg', // 请求的接口路径
    method: 'POST',
    data: {
      tel:tel
    },
    header: {
      'Content-Type': 'application/json'
    }
  }).then(res => {
    // 请求成功，获取响应数据
    if (res.code === 200) {
      console.log("发送成功");
      // 设置验证码已发送成功的标记
      that.setData({
        isCodeSent: true
      });
    } else {
      console.log("发送失败")
    }
  }).catch(error => {
    // 请求失败，处理错误
    console.error(error);
  });
 },


  //注册
  register: function(){
    console.log("register")

    // 校验真实姓名
    if (this.data.realName.trim() === '') {
      wx.showToast({
        title: '请输入真实姓名',
        icon: 'none'
      });
      return
    }

    if (!this.validateIDCard()) {
      wx.showToast({
        title: '身份证号格式错误',
        icon: 'none'
      });
      return
    }

    // 校验密码
    if (this.data.password.trim() === '') {
      wx.showToast({
        title: '请输入密码',
        icon: 'none'
      });
      return
    }

    //校验手机号格式和验证码不能为空
    const validNumber = this.data.validNumber;
    console.log("validNumber:",validNumber)
    if (!validNumber) {
      console.log("验证码不能为空");
      wx.showToast({
        title: '验证码不能为空',
        icon: 'none'
      });
      return;
    }

    if (!/^[0-9]*$/.test(validNumber)) {
      console.log("验证码只能为数字");
      wx.showToast({
        title: '验证码只能为数字',
        icon: 'none'
      });
      return;
    }

    const tel = this.data.phoneNumber
    const flag = this.checkPhoneNumber(tel)
    if(!flag){
      console.log("手机号验证失败")
      wx.showToast({
        title: '请输入正确的手机号',
        icon: 'none'
      });
      return;
    }

     // 校验昵称
     if (this.data.nickname.trim() === '') {
      wx.showToast({
        title: '请输入昵称',
        icon: 'none'
      });
      return
    }

    // 校验地址
    if (this.data.region.length == 0 || this.data.address.trim() === '') {
      wx.showToast({
        title: '请相关完善信息',
        icon: 'none'
      });
      return;
    }

    //注册接口
    request({
      url: '/user/regist',
      method: 'POST',
      data: {
        "address": this.data.address,
        "province": this.data.region[0],
        "city": this.data.region[1],
        "district": this.data.region[2],
        validNumber: this.data.validNumber,
        "user": {
          name: this.data.name,
          nickName: this.data.nickname,
          password: this.data.password,
          tel: this.data.phoneNumber,
        }
      }
    }).then(res => {
      console.log("regist:", res)
      if(res.code === 200) {
        wx.login({
          success: (res) => {
            if (res.code) {
              request({
                url: '/user/login',
                method: 'POST',
                data: {
                  "password": this.data.password,
                  "sessionKey": res.code,
                  "tel": this.data.phoneNumber
                }
              }).then(res => {
                console.log(res)
                //如果成功
                if (res.code === 200) {
                  //保存token在本地
                  wx.setStorageSync('token', res.data.token);
                  wx.setStorageSync('userinfo', res.data.userInfo)
                  // 跳到用户页面
                  wx.navigateBack({
                    delta: 1, // 返回的页面数，如果不指定，默认返回上一级页面
                    success: function(res) {
                      // 返回成功后的回调函数 登录成功提示 
                      wx.showToast({
                        title: '登录成功',
                        icon: 'success',
                        duration: 2000
                      });
                    }
                  });
                } else {
                  console.log("登录失败");
                  wx.showToast({
                    title: "登录失败",
                    icon: 'none'
                  });
                  return;
                }
                
              }).catch(error => {
                console.error(error);
              });
            } else{
              console.error('登录失败：' +  res.errMsg);
            }
          },
          fail: function(err) {
            console.error('登录失败：' +  res.errMsg);
          }
        })
      } else {
        console.log("登录失败");
        wx.showToast({
          title: "注册失败",
          icon: 'none'
        });
        return;
      }
    })
  
    
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})